一、函数式编程
函数式编程是一种编程范式也可以说是一种编程的思想，它和面向对象编程是同一级别的
函数式编程的核心思想是  把运算过程进行抽象成函数，编程的过程中是面向函数进行编程的
前端方面，vue ，react 都有部分使用函数式编程
二、函数知识相关复习
1、函数是一等公民 
    函数也是对象，可以把函数当做值来处理，函数也可以作为另一个函数的参数或者返回值
2、高阶函数
    就是把函数作为参数，或者把函数作为返回值
    使用柯里化和函数组合时，运用的就是高阶函数
3、闭包
    在一个作用域中对一个函数内部返回的函数用引用，那么当执行完这个函数时，这个函数会被销毁，但是内部被调用的值，不会被释放
三、函数式编程的基础
    lodash 一个函数式编程的库  提供了好多方法辅助我们处理函数式编程
    纯函数  指的是我们给一个函数输入相同的参数，总会得到相同的输出，并且没有副作用，相当于数学中的函数，描述输入输出的映射关系，纯函数可缓存，可测试，方便并行处理
    柯里化  可以将多元函数变成一元函数，目的是在函数组合的时候使用
    管道  把一个函数想象成一个管道，给这个函数输入数据 当这个数据经过管道之后会得到一个相应的结果
    函数组合  把多个单一功能的一元函数组合成功能强大的函数
四、函子
    函子可以帮我们控制副作用，进行异常处理 或者异步操作 等。
    可以把函子想象成一个盒子，这个盒子里面包裹着一个值，如果要处理这个值，需要调用Map处理值，Map方法接受一个函数类型的参数
我们传递的函数就是处理值的函数
    内部的_value 是保存一个值 
        Functor 函子 函子的基本使用
        MayBe 函子 处理空值的异常
        Either 函子 对异常的处理
    内部的_value 是保存一个函数
    IO 函子  可以延迟执行一个函数，控制副作用
    Task 函子
        folktale 一个函数式编程的库 提供了一些方便进行函数式处理的方法 还提供了一些函子  task
        task函子 帮助我们进行异步的处理
    Monad 函子 解决函子嵌套的问题 如果一个函子具有 静态的of方法和一个join方法 那他就是一个Monad函子